<script>
import config from "@/app.config.js";
// #ifdef APP-PLUS
import upAPP from "@/pages/uni-upgrade-center-app/utils/check-update.js";
// #endif
export default {
	methods: {
		// 初始化
		init() {
			let vk = uni.vk;
			this.getMchInfo(); // 获取商家信息
			if (vk.checkToken()) {
				this.initCart(); // 获取购物车信息
				this.lockInviter(); // 分享人锁定
			}
			// #ifdef APP-PLUS
			upAPP();
			// #endif
		},
		// 获取商家信息
		getMchInfo() {
			let vk = uni.vk;
			vk.callFunction({
				url: "client/pub.getMchInfo",
				debug: false,
				data: {},
				success: data => {
					vk.setVuex("$user.mchInfo", data.mchInfo);
					vk.setVuex("$app.inited", true);
					// 通知getMchInfo事件已准备就绪
					vk.notifyEventReady("getMchInfo", data);
					if (data.appInfo["h5-weixin"]) {
						vk.setVuex("$app.config.service.weixin.h5-weixin.appid", data.appInfo["h5-weixin"]);
						// #ifdef H5
						let env = vk.h5.getEnv();
						if (env === "h5-weixin") {
							// 自动执行微信公众号页面初始化，初始化后可以调用jsapi接口
							vk.h5.init();
						}
						// #endif
					}
				}
			});
		},
		// 获取购物车信息
		initCart() {
			let vk = uni.vk;
			vk.callFunction({
				url: "client/order.getCart",
				debug: false,
				data: {},
				success: data => {
					vk.setVuex("$cart.list", data.list);
					let cartTotal = vk.myfn.cart.getTotal();
					if (cartTotal > 0) {
						uni.setTabBarBadge({
							index: 2,
							text: cartTotal.toString()
						});
					} else {
						uni.removeTabBarBadge({
							index: 2
						});
					}
				}
			});
		},
		// 分享人锁定
		lockInviter() {
			let vk = uni.vk;
			let code = vk.getVuex("$user.inviteCode");
			if (code) {
				vk.callFunction({
					url: "client/salesman.pub_addUserLocking",
					data: {
						invite_code: code
					},
					needAlert: false,
					success: data => {
						//if (config.debug && data.msg) vk.toast(data.msg);
						vk.setVuex("$user.inviteCode", "");
					},
					fail: data => {
						vk.setVuex("$user.inviteCode", "");
					}
				});
			}
		},
		// 监听应用网络连接状态
		onNetworkStatusChange(e) {
			let vk = uni.vk;
			if (e.isConnected) {
				console.log("有网络", e.networkType);
				let inited = vk.getVuex("$app.inited");
				// 如果还未初始化成功，则重启应用
				if (!inited) {
					// 取消监听网络状态
					uni.offNetworkStatusChange(this.onNetworkStatusChange);
					console.log("重启应用", inited);
					// #ifdef APP
					plus.runtime.restart();
					// #endif
				}
			} else {
				console.log("无网络", e.networkType);
			}
		}
	},
	// 监听 - 页面404
	onPageNotFound: function (e) {
		uni.redirectTo({
			url: config.error.url
		});
	},
	// 监听 - 应用初始化完成时触发（全局只触发一次）
	onLaunch: function (options = {}) {
		if (config.debug) console.log("App Launch", options);
		let vk = uni.vk;
		// #ifdef H5
		vk.myfn.vksPayInit();
		// #endif
		let { query = {} } = options;
		if (query.scene) {
			let scene = decodeURIComponent(decodeURIComponent(query.scene));
			let splitArr = scene.split(":");
			let key = splitArr[0];
			if (key == 1) {
				let val = splitArr[1];
				query.inviteCode = val;
			}
		}
		let { inviteCode } = query;
		if (inviteCode) {
			if (config.debug) console.log("inviteCode: ", inviteCode);
			vk.setVuex("$user.inviteCode", inviteCode);
		}
		this.init();
		// #ifdef MP
		vk.updateManager.updateReady(); // 此代码可以让小程序自动检测最新版本
		// #endif
		// #ifdef APP-PLUS
		// 新安装的App可能首次启动没有网络，因此需要监听网络状态
		uni.onNetworkStatusChange(this.onNetworkStatusChange);
		// #endif
	},
	onShow: function () {
		if (config.debug) console.log("App Show");
		// #ifdef MP-WEIXIN
		// 检测如果当前是体验版，但没有点HBX的【发行】菜单发布，则提示开发者请点【发行】按钮
		try {
			console.log("当前运行模式: ", process.env.NODE_ENV);
			const info = uni.getAccountInfoSync();
			if (info.miniProgram.envVersion === "trial" && process.env.NODE_ENV !== "production") {
				// 如果不想要alert弹窗提示，可以将vk.alert改成console.log
				uni.vk.alert(
					"检测到您当前发布的【体验版】是通过【运行】按钮打包发布的，请重新点击HBX上方菜单的【发行】按钮进行打包发布小程序（如果确定是【发行】按钮打包的，请删除手机上的体验版小程序并重新扫码进入）",
					"重要提示",
					"好的"
				);
			}
		} catch (err) {}
		// #endif
	},
	onHide: function () {
		if (config.debug) console.log("App Hide");
	},
	// #ifdef H5
	// 监听属性 只有H5生效，一般用于微信公众号设置分享信息
	// 打开下方watch注释，可自动设置微信公众号的分享信息
	/* watch: {
		$route: {
			immediate: true,
			handler(newRoute, oldRoute) {
				let vk = uni.vk;
				if (vk.h5.getEnv() === "h5-weixin") {
					setTimeout(() => {
						let shareInfo = vk.myfn.onShareAppMessage();
						let getRootPath = vk.h5.getRootPath();
						// 自动带上了分享码的分享链接地址，如果单独要在某个页面修改分享信息，应该在该某个页面的onLoad方法内延迟100毫秒执行vk.h5.updateShareData来覆盖App.vue内的默认分享信息
						let link = getRootPath + shareInfo.path;
						vk.h5.updateShareData({
							title: document.title || shareInfo.title,
							desc: shareInfo.title, // 仅分享好友有效
							link: link,
							imgUrl: shareInfo.imageUrl
						});
					}, 90);
				}
			}
		}
	} */
	// #endif
};
</script>

<style lang="scss">
/*每个页面公共css */
@import "./static/vk-icon.css"; /* 动态单色字体库 */
@import "./static/vk-mall-icon.css"; /* 彩色字体库 */
@import "./uni_modules/vk-uview-ui/index.scss"; /* uview样式库 */
@import "./common/css/app.scss"; /* 自定义应用样式库 */

@import "./common/css/free.css";
@import "./common/css/common.css";
</style>
